"""
基本配置:
    flask-sqlalchemy 的相关配置也封装到了 flask 的配置项中, 可以通过app.config属性 或 配置加载方案
    如:从对象中加载封装的配置app.config.from_object()

主要配置:
配置项	                            说明
SQLALCHEMY_DATABASE_URI	        设置数据库的连接地址
SQLALCHEMY_BINDS	            访问多个数据库时, 用于设置数据库的连接地址
SQLALCHEMY_ECHO	                是否打印底层执行的SQL语句
SQLALCHEMY_RECORD_QUERIES	    是否记录执行的查询语句, 用于慢查询分析, 调试模式下自动启动
SQLALCHEMY_TRACK_MODIFICATIONS	是否追踪数据库变化(触发钩子函数), 会消耗额外的内存
SQLALCHEMY_ENGINE_OPTIONS	    设置针对 sqlalchemy本体的配置项
"""
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 应用配置
# 设置数据库连接地址
# 数据库URI(连接地址)格式: 协议名://用户名:密码@数据库IP:端口号/数据库名
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/Test'
# 是否追踪数据库修改(开启后会触发一些钩子函数)  一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

# 初始化方式1: 初始化组件对象, 直接关联Flask应用
db = SQLAlchemy(app)


# from flask import Flask
# from flask_sqlalchemy import SQLAlchemy
#
# # 初始化方式2: 初始化组件对象, 延后关联Flask应用
# # 方式2主要针对的是 动态创建应用 的场景
# db = SQLAlchemy()
#
#
# def create_app(config_type):
#     """工厂函数"""
#
#     # 创建应用
#     flask_app = Flask(__name__)
#     # 加载配置
#     config_class = config_dict[config_type]
#     flask_app.config.from_object(config_class)
#
#     # 关联flask应用
#     db.init_app(app)
#
#     return flask_app


@app.route('/')
def index():
    return 'index'


if __name__ == '__main__':
    app.run(debug=True)
